////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  cst_1_2_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef CST_1_2_0_H
#define CST_1_2_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define CST_1_2_0_NAMESPACE_BEGIN namespace cst_1_2_0 {
#define CST_1_2_0_NAMESPACE_END }

CST_1_2_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_cst12_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_cst12_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// c_x0_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   lower clamps for the 1st, 2nd and 3rd components
    /// Default Value: 0, 0, 0
    /// Range:         [0, 1023]
    /// Bit Depth:     10bits
    /// Length:        3
    /// Conversion:    no conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct c_x0_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// c_x0 - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 0, 0, 0
        /// Length:        3
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 c_x0[3];
    } c_x0_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// c_x1_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   upper clamps for the 1st, 2nd and 3rd components
    /// Default Value: 1023, 1023, 1023
    /// Range:         [0, 1023]
    /// Bit Depth:     10 bits
    /// Length:        3
    /// Conversion:    no conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct c_x1_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// c_x1 - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 1023, 1023, 1023
        /// Length:        3
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 c_x1[3];
    } c_x1_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// m_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   elements of 3x3 color space transform matix
    /// Default Value: 1, 0, 0, 0, 1, 0, 0, 0, 1
    /// Range:         [-3.999, 3.999]
    /// Bit Depth:     float
    /// Length:        9
    /// Conversion:    no conversion needed
    /// Notes:         larger values mean more cold pixels detection
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct m_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// m - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 1, 0, 0, 0, 1, 0, 0, 0, 1
        /// Length:        9
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT m[9];
    } m_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// o_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   additive offsets for the 1st, 2nd and 3rd components
    /// Default Value: 0, 0, 0
    /// Range:         [0, 1023]
    /// Bit Depth:     10bits
    /// Length:        3
    /// Conversion:    no conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct o_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// o - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 0, 0, 0
        /// Length:        3
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        INT32 o[3];
    } o_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// s_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   subtractive offsets for the 1st, 2nd and 3rd components
    /// Default Value: 0, 0, 0
    /// Range:         [-1024, 1023]
    /// Bit Depth:     11bits, signed
    /// Length:        3
    /// Conversion:    no conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct s_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// s - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 0, 0, 0
        /// Length:        3
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        INT32 s[3];
    } s_tab;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_cst12Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_cst12Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        globalelements::enable_flag_type cst_enable;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_cst12_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_cst12_reserveType chromatix_cst12_reserve;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_cst12TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_cst12TypeClass : public ParameterModule, public chromatix_cst12Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 1;
    static const UINT16 MINOR = 2;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_cst12TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_cst12TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_cst12TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_cst12_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_cst12_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_cst12_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_cst12_reserveType_c_x0_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_cst12_reserveType_c_x0_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_cst12_reserveType::c_x0_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_cst12_reserveType_c_x1_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_cst12_reserveType_c_x1_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_cst12_reserveType::c_x1_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_cst12_reserveType_m_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_cst12_reserveType_m_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_cst12_reserveType::m_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_cst12_reserveType_o_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_cst12_reserveType_o_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_cst12_reserveType::o_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_cst12_reserveType_s_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_cst12_reserveType_s_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_cst12_reserveType::s_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_cst12Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_cst12Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_cst12Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load enable_sectionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadenable_sectionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_cst12Type::enable_sectionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_cst12Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_cst12TypeClass

CST_1_2_0_NAMESPACE_END
#endif // CST_1_2_0_H

